package com.szcinda.service.dto.ghOrder;

import com.szcinda.controller.Result;
import com.szcinda.controller.params.QueryDto;
import com.szcinda.repository.ExchangeRate;
import com.szcinda.repository.OrderFee;
import com.szcinda.service.PageResult;
import com.szcinda.service.dto.history.GhOrderExportVo;
import com.szcinda.service.dto.log.OperateOrderDto;
import com.szcinda.service.dto.zadOrder.OrderFeeImportDto;
import com.szcinda.service.dto.zadOrder.ReCalculateFeeParams;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface GhOrderService {
    void create(GhOrderCreateDto createDto);

    void update(GhOrderUpdateDto updateDto);

    void update(GhOrderUpdatePartDto updateDto);

    void delete(String id, String userId);

    PageResult<GhOrderDto> query(GhOrderQueryDto params);

    List<GhOrderDto> queryAll(GhOrderQueryDto params);

    void confirmOrder(List<String> ids, String userId);

    void unConfirmOrder(List<String> ids, String userId);

    List<GhOrderDto> query(String orgId, String selectId, String createDateStart, String createDateEnd, String currency, String type, List<ExchangeRate> rateList, String userId);

    List<GhOrderDto> query(QueryDto queryDto);

    List<GhOrderDto> getAllByIds(List<String> ids);

    List<GhOrderDto> getAllByIds(List<String> ids, String type, String currencyType, List<ExchangeRate> rateList);

    void lockFee(List<String> collect, Set<String> lockColumns);

    void changeInvoice(List<String> orderIds, String type, String opId, String remark);

    void changeSettlement(List<String> orderIds, String type, String opId, String remark);

    void invoiceOrder(OperateOrderDto operateOrderDto);

    void settlementOrder(OperateOrderDto operateOrderDto);

    Result<?> batchCreate(List<GhOrderImportDto> importDatas, String opId);

    void reCalculateFee(List<String> ids);

    void reCalculateFeeById(ReCalculateFeeParams params);

    GhOrderDto getById(String id);

    List<OrderFee> getFeeListById(String id);
    List<OrderFee> getFeeListByIdIn(List<String> ids);

    Set<String> batchCreateInFee(List<Map<String, String>> dataList);

    Set<String> batchCreateOutFee(List<Map<String, String>> dataList);

    void unSetOrder(List<String> orderIds, String type);

    void batchImportFee(List<GhOrderExportVo> importDatas, String opId);
}

